package com.caiden_micheal.org.service;

import com.caiden_micheal.base.domain.AjxResult;
import com.caiden_micheal.base.dto.PageDTO;
import com.caiden_micheal.org.domain.Org;
import com.caiden_micheal.org.dto.OrgSelectDTO;
import com.caiden_micheal.org.vo.*;
import com.caiden_micheal.position.domain.Position;
import com.caiden_micheal.user.domain.UserAuthority;

import java.util.List;

public interface OrgService {

    List<UserAuthority> findOrgAuthorityListById(Long id);

    PageDTO findOrgsByCondition(OrgQueryVO orgQueryVO);

    PageDTO findOrgsByConditionPermission(OrgQueryVO orgQueryVO);

    List<OrgSelectDTO> findOrgSelectDatas();

    AjxResult addOrg(Org org);

    AjxResult editOrg(Org org);

    AjxResult updateOrgUser(OrgAddUserVO orgAddUserVO);

    AjxResult removeUser(Long userId);

    PageDTO excludePermission(OrgQueryVO orgQueryVO);

    AjxResult orgPermissionAssignment(OrgPermissionAssignmentVO orgPermissionAssignmentVO);

    AjxResult orgPermissionRemove(OrgPermissionRemoveVO orgPermissionRemoveVO);

    AjxResult orgQuerySelectByPosition(Position position);

    AjxResult orgAddPermission(OrgAddPermissionVO orgAddPermissionVO);

    AjxResult orgRemoveAuthority(OrgPermissionRemoveVO orgPermissionRemoveVO);

    List<UserAuthority> findOrgAuthorityListByIds(List<Long> orgIdList);

    AjxResult findOrgTree();
}
